package com.lhy.gateway.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.security.crypto.bcrypt.BCrypt;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class JwtUtils {
        public static String encrypt(Map map, Date dateOut) {
                //当前时间
                Date date = new Date();
                JwtBuilder builder = Jwts.builder().setId(UUID.randomUUID().toString()) //设置唯一编号
                        .setSubject("JWT")//设置主题  可以是JSON数据
                        .setIssuedAt(date)//设置签发日期
                        .setExpiration(dateOut)//用于设置过期时间 ，参数为Date类型数据
                        .setClaims(map)
                        .signWith(SignatureAlgorithm.HS256, "itbuka");//设置签名 使用HS256算法，并设置SecretKey(字符串) //构建 并返回一个字符串
                return builder.compact();
        }

        public static Map decrypt( String compactJwt) {
                Claims claims = Jwts.parser().setSigningKey("itbuka").parseClaimsJws(compactJwt).getBody();
                return claims;
        }
}
